package {
	[SWF(width = 640, height = 480, backgroundColor = 0xFFFFFF)]
	
	import flash.display.*;
	import flash.events.*;
	import flash.net.*;
	import flash.system.*;
	
	public class Main extends MovieClip {
		private var ytp:Object;
		
		public function Main() {
			stage.scaleMode = StageScaleMode.NO_BORDER;
			stage.align = StageAlign.TOP;
			
			Security.allowDomain("*");
			
			var loader:Loader = new Loader();
			loader.contentLoaderInfo.addEventListener(Event.INIT, initHandler);
			loader.load(new URLRequest("http://www.youtube.com/apiplayer?version=3"));
		}
		private function initHandler(event:Event):void {
			ytp = Loader(LoaderInfo(event.currentTarget).loader).content;
			addChild(ytp as DisplayObject);
			ytp.addEventListener("onReady", onReadyHandler);
			ytp.addEventListener("onError", onErrorHandler);
			ytp.addEventListener("onStateChange", onStateChangeHandler);
			ytp.addEventListener("onPlaybackQualityChange", onPlaybackQualityChangeHandler);
		}
		private function onReadyHandler(event:Event):void {
//			ytp.setSize(320, 240);
			ytp.setSize(stage.stageWidth, stage.stageHeight);
			
			var id:String = "X8k-qesi9lU";
			//ytp.cueVideoById(id); // 再生ボタン表示
			ytp.loadVideoById(id); // すぐ再生
		}
		private function onErrorHandler(event:Event):void {
			// error 150 「埋め込み拒否」
			trace("error", Object(event).data);
		}
		private function onStateChangeHandler(event:Event):void {
			// state -1 未スタート（SWFが読み込まれたときは -1 の onStateChange イベントが発行される）
			// state 0 終了
			// state 1 再生中
			// state 2 一時停止
			// state 3 バッファリング中
			// state 5 停止（SWF が読み込まれ、キューに追加されて、再生可能になったら 5 の onStateChange イベントが発行される）
			trace("state", Object(event).data);
		}
		private function onPlaybackQualityChangeHandler(event:Event):void {
			// クオリティを変更した場合
			trace("quality", Object(event).data);
		}
	}
}
